#1
"""
表4-7为某班学生的成绩，请通过已经定义好的模板"{}同学，你的考试成绩是：语文{}，英语{}，数学{}，总成绩{}，特此通知！"输出姓名和成绩
姓名          语文          英语          数学
张三          90            87           78
李四          93            87           67
王五          88            90           95
"""
#定义列表保存姓名和成绩
std = [
    ['张三', 90, 87, 78],
    ['李四', 93, 87, 67],
    ['王五', 88, 90, 95]
]
#定义模板
mod = '{}同学，你的考试成绩是：语文{}，英语{}，数学{}，总成绩{}，特此通知！'
for st in std:
    cnt = 0
    for i in range(1,4):
        cnt += st[i]
    print(mod.format(st[0], st[1], st[2], st[3], cnt))

    #2
    """
    编程实现，500个人围成一个圈，从1开始数，每数到3的倍数的人离开圈子，循环往复直到最后只剩一个人，输出剩下的这个人原来在圈中的位置（编号）
    """
    joseph = []  # 定义空列表
    for i in range(1, 501):  # 循环500次
        joseph.append(i)
    index = 0  # 定义index，并赋为0
    count = 0  # 定义count，并赋为0
    while len(joseph) > 1:
        count += 1  # count加1
        if count % 3 == 0:
            joseph.pop(index)
            index -= 1
        index += 1
        if index == len(joseph):
            index = 0
    print(joseph)

    #3
    """
    编程实现，使用列表保存学生的信息，包括姓名、性别、年龄，然后使用字典保存3个班级的学生信息，每个班级3个学生，以班级名为键，以存放学生信息的列表为值，最后根据输入的班级名输出该班级的学生信息
    """
    # 定义列表，每个列表保存3个学生信息
    class1 = [
        ['张三丰', '男', 7],
        ['杨过', '男', 9],
        ['郭靖', '女', 8]
    ]
    class2 = [
        ['刘备', '男', 10],
        ['孙尚香', '女', 8],
        ['诸葛亮', '男', 9]
    ]
    class3 = [
        ['许明明', '女', 11],
        ['刘能', '男', 12],
        ['马三', '男', 10]
    ]
    # 定义字典，并将列表添加到字典中
    grade = {}
    grade['三年级一班'] = class1
    grade['三年级二班'] = class2
    grade['四年级一班'] = class3
    class_name = input('请输入班级名：')
    print(class_name, '的学生信息：')
    for key in grade.keys():  # 遍历字典的键
        if key == class_name:  # 如果键等于输入的班级名
            for student in grade[key]:  # 遍历输入的班级名对应的值
                for info in student:  # 遍历学生信息列表
                    print(info, end=' ')
                print()